package com.ruoyi.framework.aspectj.lang.annotation;

import com.ruoyi.framework.aspectj.lang.enums.LimitType;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author: xd
 * @create: 2020-03-17 16:39
 * @description: 限流
 **/

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Limit {


    // 资源 key
    String key() default "";
    // key prefix
    String prefix() default "";
    // 时间的，单位秒
    int period() default 60;
    // 限制访问次数
    int count() default 60;

    String name() default "";

    // 限制类型
    //
    //
    LimitType limitType() default LimitType.IP;
//    /**
//         * 使用实例：
//         * 测试限流注解，下面配置说明该接口 60秒内最多只能访问 10次，保存到redis的键名为 limit_test，
//         * 即 prefix + "_" + key，也可以根据 IP 来限流，需指定limitType = LimitType.IP
//         */
////    @Limit(key = "test", period = 60, count = 10, name = "resource", prefix = "limit")
////    @GetMapping("/test")
////    public int testLimiter() {
////        return ATOMIC_INTEGER.incrementAndGet();
////    }


}
